約 3,470,206 件
https://w.atwiki.jp/ce00582/pages/1881.html
Private Sub Command1_Click() Dim age As Single Dim car As Single Dim minx(14 To 75, 0 To 50) As Single Open "c /dig/data/男子被保険者.txt " For Input As #6 Do Until EOF(6) Input #6, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52 age = a1 minx(age, 0) = a2 minx(age, 1) = a3 minx(age, 2) = a4 minx(age, 3) = a5 minx(age, 4) = a6 minx(age, 5) = a7 minx(age, 6) = a8 minx(age, 7) = a9 minx(age, 8) = a10 minx(age, 9) = a11 minx(age, 10) = a12 minx(age, 11) = a13 minx(age, 12) = a14 minx(age, 13) = a15 minx(age, 14) = a16 minx(age, 15) = a17 minx(age, 16) = a18 minx(age, 17) = a19 minx(age, 18) = a20 minx(age, 19) = a21 minx(age, 20) = a22 minx(age, 21) = a23 minx(age, 22) = a24 minx(age, 23) = a25 minx(age, 24) = a26 minx(age, 25) = a27 minx(age, 26) = a28 minx(age, 27) = a29 minx(age, 28) = a30 minx(age, 29) = a31 minx(age, 30) = a32 minx(age, 31) = a33 minx(age, 32) = a34 minx(age, 33) = a35 minx(age, 34) = a36 minx(age, 35) = a37 minx(age, 36) = a38 minx(age, 37) = a39 minx(age, 38) = a40 minx(age, 39) = a41 minx(age, 40) = a42 minx(age, 41) = a43 minx(age, 42) = a44 minx(age, 43) = a45 minx(age, 44) = a46 minx(age, 45) = a47 minx(age, 46) = a48 minx(age, 47) = a49 minx(age, 48) = a50 minx(age, 49) = a51 minx(age, 50) = a52 Loop Close #6 For age = 15 To 69 For car = 1 To 50 minx(age, car) = minx(age, car) / 10 ^ 4 Next Next Open "c /dig/gdata/男子被保険者.txt " For Output As #4 For age = 15 To 69 For car = 1 To 50 Write #4, age, car, minx(age, car) Next Next Close #4 End Sub
https://w.atwiki.jp/orange-computer/pages/98.html
今日のアクセス数 - 序章 はじめにこの講座は 推奨環境 作者注 第一章 BASICとは?BASICとは 基本、これからの流れ BASICの主な特徴 第二章 予約語と構文ってなに? 一覧命令 関数 演算子 非構造的な構文 実行制御・編集支援命令 第三章 BASICを体験しながら基本を学ぶN88互換BASICをダウンロード、インストール サンプルプログラム1行番号 INPUT" "; 構文 PRINT" " 構文 演算命令 END サンプルプログラム1のまとめ 序章 はじめに この講座は この講座では、プログラミング初体験者にぴったりのBASIC言語を徹底解説します。 推奨環境 この講座では、主に10進BASICとN88互換BASICを使用します。どちらも、コンパイラ(コードを、ビルド・デバッグするソフト)はWindowsです。(推奨Windows Me以上。Windows7β版での動作確認済み。) ちなみに、10進BASICのコンパイラにはIntelMac用も存在しますが、X11とGTKライブラリを使うもので、初心者には難しすぎるので割愛します。 作者注 一応言っときますが、 作者は実は中学一年生なのです。どうか、賞賛の拍手と寄付(DONATE)をお願いします。 じゃあ、始めましょうか。 第一章 BASICとは? BASICとは BASICは手続き型言語の一つ。 BASICとはBeginner s All purpose Symbolic Instruction Codeの略(頭字語)であるとされる。また、BASIC FORTRANの略ともいわれる。英単語の「Basic(基礎)」の意味も持つと考えられている。 命令、関数がC言語系よりも単純なため、基礎学習には最適である。 ただし、Cほど複雑な命令はできない。 基本、これからの流れ BASICには様々な種類がある。最も有名なのは、VisualBASIC(以下VB)であろう。しかし、VBを操るには少々の専門的知識が必要なので、まずは超基本である「N88互換BASIC」を使ってプログラミングという物を理解しよう。その次に、少々発展的なものができる「10進BASIC」に移る予定である。ちなみに、BASIC学習を修了したら、つぎはMacユーザーのためにXcode入門に移る予定だ。 BASICの主な特徴 主な特徴 歴史的な経緯からFORTRAN、C言語と比較されることが多い。 対話型の編集・実行環境がある(コマンドライン型のコンパイラ以外)。 古い処理系では行頭に行番号を必要とし、分岐をGOTOに依存する。現在でも互換性のために両者を残している処理系もある。 初心者に優しい字句の方針を持つ。予約語の大文字と小文字を区別しない。大文字を基本とする処理系が多く、強制的に大文字に変換される処理系もあった。 算術演算子以外の記号は極力使わない。論理演算子はAND、OR、XOR、NOTである。括弧は演算の優先順位も、関数の引数も、配列もすべて「()」のみを用いる。ブロックも「{}」のような括弧ではなく「FOR文からNEXT文までの間」といった構文により指定する。 等価演算子に数学と同じ表記の「=」が使える。代入構文(LET文およびその省略形)で用いられた場合に代入演算子と解釈される。C言語では代入演算子と区別するため等価演算子に「==」が使われるため、誤って「=」とされるミスが発生するが、BASICではそのような問題は起こらない。 プログラムは命令と関数からなる。これらの名は予約語とされ、変数名に用いることはできない。 変数は基本的に実数型と文字列型である。中でも文字列操作は柔軟にできるようになっている。文字列型は変数名の末尾に「$」をつけて区別することが多い。処理系によっては実数型に単精度・倍精度・整数を区別できたり、文字列との区別をしないバリアント型を持つものもある。 実数型同士に明示的型変換(キャスト)を必要としない。 明示的な変数宣言を必要とせず、使用し始めたところで宣言したものと解釈される。 変数は自動的に初期化される(実数型は0、文字列型は空文字列)。 定数や構造体をサポートしていないことが多い。 命令文は改行で区切る。一行に複数命令を詰め込めるよう「マルチステートメント」という独自の区切り記号( )を実装した処理系も多い。 字下げは必須ではない(書き方としては推奨される)。 実行は基本的に行頭から行われる(MAINを持つ処理系もある)。 高級言語である(ただし、低水準の操作を拡張されたものも多い)。ポインタはない(変数のアドレスを参照できる処理系もある)。 他の言語で書かれたプログラムとのリンクやBIOS、APIの呼び出しには複雑な手続きが必要か、またはできない。 その他にも初心者への配慮が見られる。恒等式と混乱されがちな代入文を、LET文を用いることで「LET A=2」(Let A equal 2 「Aを2と同じにしなさい」)と読め、意味がつかみやすくなる。LETは省略可能であり、初心者の理解のためにのみ存在する命令である。 画面出力のPRINT文は既定で改行され、改行せずに続けたいときには「;」をつける。これは多くの言語に見られる改行文字(\n)による改行に比べ処理系の実装に手間がかかるが、人間には優しい。 第二章 予約語と構文 (※作者注:ここは軽く読み飛ばしておいてください。実践で使います。いわゆる、英語の単語や文法ってやつ。) ってなに? 英語で言う単語や文法ってやつ。BASICではかなり英語に近い。(つまり、ほかのコンピューター言語は違うってこと。) 一覧 命令 IF 〜 THEN 〜 ELSE - 条件分岐ELSEに対応しない処理系もある FOR 〜 NEXT - ループ構文 END - プログラム終了 READ 〜 DATA - データを変数に代入読むDATAの位置を指定するにはRESTORE命令を使う DIM - 配列変数の宣言 REM - Remark(コメント行) LET - 変数代入(省略可能な処理系が多い) MAT - 行列処理 PRINT - 文字列表示 LPRINT - プリンタ印字 PRINT ~ USING - 書式付き文字列表示これらの出力は自動的に改行される。それを避ける場合は末尾に「;」(改行なし)や「,」(タブ区切り)を付ける。 INPUT - 対話型入力 POKE - メモリ領域の直接操作 関数 CHR$ - アスキーコードから文字に変換 VAL - 文字列を数値に変換 MID$ - 文字列操作関数 RND - ランダム関数 INPUT$ - 1文字入力 PEEK - メモリ領域の直接参照 演算子 + 加算 - 減算 * 乗算 / 除算(実数) ¥ 除算(整数)※一部の処理系のみ MOD 剰余 ※Full BASICではMOD$関数を使用 ^ べき乗 OR 論理和 AND 論理積 XOR 排他的論理和 , 大小比較 = 等号・または(LETでの)変数代入 不等号 = , = 以上 = , = 以下 非構造的な構文 主に旧世代のパソコンのBASICで実装されていた。処理系によっては、互換性のために残している。 GOSUB (GO SUB) 〜 RETURN - サブルーチン分岐、復帰 GOTO (GO TO) - 強制分岐 ON 〜 GOSUB - 条件つきサブルーチン分岐 ON 〜 GOTO - 条件つき強制分岐 実行制御・編集支援命令 主に旧世代のパソコンのBASICで実装されていた。 AUTO - 行番号自動入力支援 RENUM - Renumber 行番号の一括付け直し RUN - プログラム実行 NEW - プログラム全消去 TRON - Trace On (実行中の行番号を表示) TROFF - Trace Off (TRON解除) LOAD - ディスクからプログラムファイルの読み込み CLOAD - テープからプログラムファイルの読み込み SAVE - ディスクへプログラムファイルを保存 CSAVE - テープへプログラムファイルを保存 FILES - ディスクファイルの一覧 第三章 BASICを体験しながら基本を学ぶ N88互換BASICをダウンロード、インストール これから使用するN88互換BASICは潮田さんが作った有名なコンパイラで、Vectorからダウンロードできます。こちらからダウンロードしてください。 このソフトはPC-9801というもので使われていたN88BASIC言語をWindowsで使用可能にしたポピュラーなコンパイラです。 インストールを済ませて、WinBASIC.exeを開いてください。 白い「プログラム画面」と黒い「実行画面」が表示されます。当然、白いウィンドウにBASICを打ち込み、黒いウィンドウで実行することになります。 サンプルプログラム1 下のプログラムは円または扇形の面積を求めるものです。まずは、このプログラムを コピー/貼付け して実行してみましょう。 (※作者注 下のプログラムの”(引用符)の間の言葉は日本語に変えても可能です。) 10 PRINT"Coding by OrangeComputer Inc. CEO Tehu Jobs Jr." 20 PRINT"This program will get circle area." 30 INPUT"Please input a radius of this circle.";RADIUS 40 INPUT"Please input a central angle of this circle.";ANGLE 50 CIRCLEAREA=RADIUS*RADIUS*3.14*ANGLE/360 60 PRINT"This circle s area is ";CIRCLEAREA 70 END 実行するには、入力スペースの上の再生(三角)ボタンをクリックします。 プログラムからの質問に答えていきましょう。1つ目のradiusは半径、2つ目のcentral angleは中心角です。 半径10cm、中心角360°としましょう。 黒画面にこのように表示されます。 Coding by OrangeComputer Inc. CEO Tehu Jobs Jr. This program will get circle area. Please input a radius of this circle.? 10 Please input a central angle of this circle.? 360 This circle s area is 314. うーん、これだけで、結構便利ですね。 さあ、BASIC言語をもう一回見てみましょう。 10 PRINT"Coding by OrangeComputer Inc. CEO Tehu Jobs Jr." 20 PRINT"This program will get circle area." 30 INPUT"Please input a radius of this circle.";RADIUS 40 INPUT"Please input a central angle of this circle.";ANGLE 50 CIRCLEAREA=RADIUS*RADIUS*3.14*ANGLE/360 60 PRINT"This circle s area is ";CIRCLEAREA 70 END これでプログラムが動くことを理解して、基本から学んでいきましょう。 行番号 初歩的なBASICでは、行番号を必ず各行の先頭に打ちます。 これは、小さい順に打っていけばOKです。 ではなぜサンプルプログラムで「1、2、3,4、5・・・」としないか? 単純なことで、「途中に行追加するときのため」です。行番号に小数は使えませんから、「1、2,3、4・・・1000」の行番号を打ったプログラムがあったとして、3行目と4行目の間に追加したくなったら、4~1000のすべての数字を1ずつ上げなければいけません。それを防ぐために、「10、20、30、40・・・」と打っているのです。 まず行番号はマスターしましたね。 INPUT" "; 構文 30,40行目のINPUT” ”は、操作者に値の入力をうながす構文です。 例えば、 30 INPUT"Please input a radius of this circle.";RADIUS だと、 「画面に『Please input a radius of this circle.』と表示し、変数RADIUSに代入する値の入力をお願いしろ」という意味です。 変数とは、数学でいうx,yなどの未知数のことです。 10と入力すれば、BASICは「RADIUS=10」だと考えます。数学の問題で、「x=23のとき、yの値を求めよ」みたいなもんです。 「公式」は、 行番号 INPUT" 言葉 "; 代入する変数 です。 これで、INPUT構文もOKです。 PRINT" " 構文 10,20,60行目のPRINT" "は、文字列や変数の値などを表示する構文です。 例えば、 10 PRINT”Coding by OrangeComputer Inc. CEO Tehu Jobs Jr." だと、 「画面に『Coding by OrangeComputer Inc. CEO Tehu Jobs Jr.』と表示し、次の行にすすめ。」という意味です。 また、 60 PRINT"This circle s area is ";CIRCLEAREA だと、 「文字列『This circle s area is 』と、変数CIRCLEAREAの値を一緒に表示しろ。そして、次の行に進め。」という意味です。 CIRCLEAREAの値が10ならば、「This circle s area is 10」と表示します。 これで、PRINT構文もマスターです。 演算命令 これは普通の計算と同じです。 サンプルプログラム1の50行目では、 50 CIRCLEAREA=RADIUS*RADIUS*3.14*ANGLE/360 とありますが、これは円の面積の公式とおなじです。 「円、扇形の面積=半径*半径*3.14*中心角/360」 ちなみに、乗法記号は*、除法記号は/で表します。 括弧のある計算は、()のみを使います。{} []は使いません 例:4*(4+3)=28 END プログラムの最後には、終了を表すENDをつけます。これは大丈夫ですね。 サンプルプログラム1のまとめ これで、サンプルプログラム1は理解できましたか?これが、BASICの最も基本「行番号」「PRINT」「INPUT」「演算」「END」です。 簡単でしょ? また更新します。
https://w.atwiki.jp/openmusic/pages/287.html
今回のチュートリアルでは、multi-seq, voice, polyについて触れる。 今までの出力結果は、クラスchord-seqを用いて解説して来た。 単純に和音の羅列としての表示結果であれば、これでも十分である。 これは時間経過の表記をms(mill seconds, ミリ秒)単位で行う。 これが適しているのは、例えば伝統的な連譜では書ききれない複雑なリズムを伴う場合などである。 例えば以下のパッチを見てみよう。 これはom-randomによって1から100までの数値がforloopによって順に与えられ、om*で10倍して10-1000までの範囲でランダムな数値を生み出す。 つまり確率としては、omloopが徐々に大きな数値を出すほど、ループの後の方では大きな数値が出る確率が上がる。 これをミリ秒単位のリズムとして読み込んで表示させると、画像のようになる。 次はmulti-seqを見てみよう。これは複数のchord-seqをlistでまとめてひとつのクラス内に表示するものである。 次のパッチを見てみよう。これらは3つのchord-seqに違うdurationを与え、それらをlistでまとめてmulti-seqに送っている。 listにまとめる際、chord-seqのoutput 0から出力していることに注意。 これがmulti-seqの基本であるが、先ほどのランダムなリズムを複数用意してmulti-seqでまとめて表示すると、こうなる。 ここではomloopを二重にしており、内側のomloopはワンスモードにして、dx- xとchord-seqによって2回evaluateされることで数値が異なるのを防いでいる。外側のomloopが次のループに入ると、ワンスモードの内部のomloopはまた新たにevaluateされることになる。 countはevaluateされるたびに1ずつ増えた数を出力する。listloopと組み合わせて順番に数値を送るのには有効な手段である。 ほかにも総カウント数を出力する、カウントをリセットするといった機能があるが、ひとつ気を付けなければいけないのは、先ほどの内部のomloopの例と同様、パッチ内で2度evaluateされることがあり、その場合は数値が替わってくるということに気をつけなければならない。 さもなければ、非公式チュートリアル07で触れた通り、length, forloop, nthを組み合わせるやり方を推奨する。こちらは確実にループの回数を参照できるからである。 なお、メインパッチに置いたctrlchgはMIDIのコントロールチェンジを送るものであり、ここでは5つのMIDIチャンネルのパンをそれぞれ左右に振り分けているが、これは必ずしも必要ではない。 ―― さて今度はvoiceについて解説する。 これはリズムとテンポを伝統的な記譜法で表記する。通常の楽譜の他、連譜を何重にも組み合わせたブライアン・ファーニホウのような複雑な楽譜まで対応可能である。 voiceのinput 1(右から2番目)は、rhythm treeと呼ばれる多重のリストを組み合わせた表記を用いる。input 2にはchord-seqのinput 1と同じくchordsを入力する。この際chord-seqのoutput 1からの出力を入力しても良い。 rhythm treeに関しては、公式マニュアルおよび公式チュートリアルに詳細な解説があるので、詳しくはそちらを見て頂きたい。ここでは最低限の解説にとどめる。 まず冒頭には?を置く。(?の代わりに具体的な数値や分数が来ても良い。) 次は二重括弧で、拍子およびその中のリズムを表す。例えば下記の例は4/4拍子で4分音符が4つ並ぶことを意味する。 (? (((4 4) (1 1 1 1)))) ある拍の次に括弧を指定すれば、さらに音符を細かく分割することも出来る。また連譜の指定も可能である。 例えば下記の例では、4/4拍子で4分音符が3つ並んだ後、8分音符3つが3連譜で並ぶ。 (? (((4 4) (1 1 1 (1(1 1 1)))))) 1以外の数を指定すれば、音価を変える事が出来る。 休符は負数で指定する。 タイはそのタイのかかる音符を小数点で指定する。 上の例を少し変えると、4/4拍子で2分音符、4分音符が並んだ後、8分音符3つが3連譜で並び、その最初にはタイがかかり、2つ目は休符になる。 (? (((4 4) (2 1 1(1.0 -1 1))))) では上の2分音符を、付点4分音符と8分音符に分割するにはどうするかというと、まず下記は間違いである。これはevaluateするとエラーが出る。 (? (((4 4) (1.5 0.5 1 1(1.0 -1 1))))) (←誤った例) 正確には、先ほどの2を括弧でくくり、3 1で分ける。つまり (2 (3 1)) が足されるわけである。 (? (((4 4) ((2 (3 1)) 1 1(1.0 -1 1))))) とばいえ、通常これらの表記で全てのリズムを記譜するのは大変難しい。 そこで通常は、rhythm-treeおよびmktreeのファンクションを使うことになる。 pulsemakerは、小節ごとの拍数(小節の分子と分母)および具体的なリズムを、3つのinputに分けて書き込む。 このpulsemakerは、実は公式チュートリアル25で作られるサブパッチRtm constrctと全く同じ構造である。 つまり、pulsemakerの内部構造を詳しく理解したい場合は、公式チュートリアル25を見れば良い。 逆に言えば、一度仕組みを分かってしまえば、複雑なサブパッチを作ったりコピーしなくても、ファンクションpulsemakerを使えば素早い処理速度で同じ結果が得られる。 mktreeは、各拍ごとのリズムを分数で指定し、拍数を2つの数値の組み合わせによるリストの集合で指定する。 tree2ratio および get-signatures と組み合わせて使うと、リズムを分数単位で拡大・縮小できる。 リズムに関する指定には、この他にもmaketreegroups, tie-tree, reduce-tree, remove-restsなど、様々なファンクションがある。 これらはOpenMusicに付属するサンプルパッチにて詳しく解説されているので、それを参照してほしい。 Treeに関するパッチは、以下のフォルダに収録されている。(Macの場合) Applications/OM 6.7/tutorials/Trees voiceと関連する補助クラスとして、groupとmeasureがある。これはそれぞれ、ある一かたまりのリズム、および特定の小節におけるリズムのデータだけを扱うクラスである。 またchord-seqに対してmulti-seqがあるように、複数のvoiceをまとめて表示するクラスがある。それがpolyである。 polyにおける各voiceは、それぞれ独立した小節線及びテンポを維持できる。 voiceを使った具体例は次回以降に見て行こう。 参照 非公式チュートリアル 前後 非公式Tutorial 07 武満徹分析 非公式Tutorial 09 ディアトニック即興 非公式Tutorial 概要
https://w.atwiki.jp/kokeiro/pages/30.html
つまり、コピペです。 other.cpp void GetKeyInput( int *KeyBuf ){ char damy[256]; GetHitKeyStateAll( damy ) ; for( int i=0 ; i 256 ; i++ ){ if( damy[i] == 1 ) KeyBuf[i]++; else KeyBuf[i] = 0; } } この関数で取得したキーボードの押下時間というのは、さまざまな関数、さまざまなソースファイルから呼び出されることになります。そこで、キーボードの押下時間を保持した変数をグローバル変数?として使いたいと思います。マクロ定義?をうまく用いると変数の宣言と外部変数の宣言をきれいに書くことが出来るのですが、解説が面倒くさいのでここではマクロ定義を用いない方法をとります(キリッ ソースフォルダに今までと同じように「global」ソースファイルを『sorce』に追加してください。 ヘッダーフォルダにも「global」ヘッダーファイルを『sorce』に追加してください。 以下のように書き足してください。 global.cpp // グローバル変数の実体宣言 int Key[256]; global.h #ifndef _GLOBAL_H_ #define _GLOBAL_H_ extern int Key[256]; #endif main.h ... #include"DxLib.h" #include"global.h" ... これで、全ての関数、ソースファイルでグローバル変数『Key』の値を見ることが出来るようになりました。 MainLoop関数とメイン関数を書き換え、GetKeyInput関数を呼び出すようにします。 main.cpp #include"main.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if(DxLib_Init()==-1) return 1; SetDrawScreen(DX_SCREEN_BACK); MainLoop(); DxLib_End(); return 0; } void MainLoop(){ while(1){ if( ProcessMessage() != 0 || CheckHitKey( KEY_INPUT_ESCAPE ) != 0 ) break; ClearDrawScreen(); GetKeyInput( Key ); ScreenFlip(); } } この書き換えにより文字すら表示されなくなりました。作成が実感できませんね。
https://w.atwiki.jp/ff11windower2/pages/231.html
Windower3系/スクリプトTIPS スクリプト実行の中断 中断可能なループスクリプト(例) ボヤーダ苔トレードスクリプト スクリプト実行の中断 Windowerスクリプトは一度実行すると最後の行まで実行し続けるため厳密には中断することができません。 しかし、中断とほぼ同じ動きをするように組むことは可能です。 alias w1 wait 6alias u1 input (FFコマンド1)alias u2 input (FFコマンド2)alias u3 input (FFコマンド3)alias u4 input (FFコマンド4)alias u5 input (FFコマンド5) alias run u1;w1;u2;w1;u3;w1;u4;w1;u5 alias runstop2 alias u1 /;alias w1 /;alias u2 /;alias u3 /;alias u4 /;alias u5 /;alias run /;alias runstop input /echo #### 中断 ####;runstop2 bind ^escape runstop input /echo #### 開始 (中断:Ctrl+ESC or /console runstop) ####runinput /echo #### 終了 #### 説明 1行目~6行目:各コマンドの内容を変数に格納。 (FFコマンドx)はFF上でのコマンド(/ma 魔法名など)を指定。 8行目:さらに各コマンドを実行順に並べたものを変数runに格納。 10行目:1~8行目で指定したコマンドをクリアするコマンドを変数runstop2に格納 11行目:変数runstopに「/echo 中断」とrunstop2を格納 13行目:Ctrl+ESCキーを押すと変数runstopが実行されるように設定 15行目:スクリプトを開始したことを/echoする行 16行目:変数runを実行。すなわち1~6行目で指定したコマンドが8行目で指定した順に実行される。 17行目:全てが終わった場合に表示される/echo行 ポイントは10~13行目であり、Ctrl+ESCが押されるとコマンドが入っている変数a1~5、w1の内容が、クリアされます。 16行目で実行中のコマンドの内容がクリア=その後の実行をクリア⇒すなわち、中断と同じ動き。となります。 [TOP] 中断可能なループスクリプト(例) 「スクリプト実行の中断」の応用編として強化スキル上げマクロの例を掲載します alias w1 wait 6 alias u1 input /ma ブレイズスパイク me ;w1 alias u2 input /ma アイススパイク me ;w1 alias u3 input /ma ショックスパイク me ;w1 alias run u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3;u1;u2;u3 alias runstop2 alias u1 /;alias u2 /;alias u3 /;alias w1 /;alias run /; alias runstop input /echo #### 中断 ####;runstop2 bind ^escape runstop input /echo #### 強化スキル上げ #### input /echo #### 停止:Ctrl+ESC or /console runstop #### run input /echo #### 終了 #### [TOP] ボヤーダ苔トレードスクリプト セルビナのサンド&バス名声クエ「品質管理」のトレードマクロです。 「FF11Sendkey」が必須です。うぷろだより入手してあらかじめ常駐させておいてください。 下のスクリプトをScriptsフォルダへ入れて適当な名前で保存 alias w1 wait 0.5 alias w2 wait 1.5 alias w3 wait 4.5 alias ta input /targetnpc;input /echo Targetnpc alias tr w1;input /item ボヤーダ苔 t ;input /echo Trade alias rt1 w2;sendkey kh_return;input /echo RT1 alias rt2 w3;sendkey kh_return;input /echo RT2;w1 sc v s boyadacount 0 alias run1 sc v i boyadacount;ta;tr;rt1;rt2 alias runall run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1;run1 alias runstop2 alias ta /;alias tr /;alias rt1 /;alias rt2 / alias runstop input /echo #### 中断 ####;runstop2 bind ^escape runstop bind ^F1 sc v list input /echo #### ボヤーダ苔トレード #### input /echo #### 停止:Ctrl+ESC or /console runstop #### runall sc v r boyadacount bind ^escape / bind ^F1 / input /echo #### 終了 #### 途中で止める場合:Ctrl+Esc 何回繰り返したか確認したい場合:Ctrl+F1 動かない場合は、waitの値を調整してみてください。 327 :名無しのWindower使い :sage :2009/02/01(日) 01 05 19 ID kkpecPjM スクリプトに関してなんだが、setkey使えばFF11Sendkeyって必要ではない場面が多い気がする 無論、キーの上げ下げでコマンドが冗長化する傾向はあるけど、頻用なキー操作を alias enter setkey enter down;wait 0.250;setkey enter up こんな風にaliasにしとけば大体は解決しないかな WikiのTipsにあるボヤーダ苔トレードスクリプトも alias enter setkey enter down;setkey enter up を追加した上で sendkey kh_return を enter に置換するだけでFF11Sendkey抜きで再現できるんじゃないかと思うんだけど
https://w.atwiki.jp/ce00582/pages/731.html
Private Sub Command1_Click() Dim th(1 To 100) As Single Dim s As Single Dim m As Single Dim n As Single Dim mx As Single Dim nx As Single Dim q As Single Dim c1 As Single Dim y1 As Single Dim c2 As Single Dim y2 As Single Dim cs(1 To 100) As Single Dim ys(1 To 100) As Single Dim u(1 To 99, -1 To 1, -1 To 1) As Single Dim w(1 To 99, -1 To 1, -1 To 1) As Single Dim gotoc(1 To 99, -1 To 1, -1 To 1, -5 To 5) As Single Dim gotoy(1 To 99, -1 To 1, -1 To 1, -5 To 5) As Single Dim v(1 To 99, -1 To 1, -1 To 1, -5 To 5) As Single Dim opc(1 To 100) As Single Dim opy(1 To 100) As Single Dim opq(1 To 100) As Single Dim w1 As Single Dim wp As Single Dim bp As Single Dim h As Single Dim bb As Single Dim s1 As Single Dim time As Single Open "c /201.txt" For Input As #2 Do Until EOF(2) Input #2, a1, a2, a3 s = a1 cs(s) = a2 ys(s) = a3 Loop Close #2 For s = 1 To 100 th(s) = 0.02 * s Next h = 10 ^ (-2) time = 1 Do Until time 1000 For s = 1 To 99 For m = -1 To 1 For n = -1 To 1 c1 = cs(s) + m * h y1 = ys(s) + n * h l1 = y1 / th(s) pp = 0 If l1 0 Then pp = 1 If l1 0 Then l1 = 0 If l1 0.99 Then pp = 1 If l1 0.99 Then l1 = 0.99 If c1 0.01 Then pp = 1 If c1 0.01 Then c1 = 0.01 u(s, m, n) = Log(c1) + Log(1 - l1) If pp = 1 Then u(s, m, n) = -999 Next Next Next For s = 1 To 99 For m = -1 To 1 For n = -1 To 1 c1 = cs(s) + m * h y1 = ys(s) + n * h l1 = y1 / th(s + 1) pp = 0 If l1 0 Then pp = 1 If l1 0 Then l1 = 0 If l1 0.99 Then pp = 1 If l1 0.99 Then l1 = 0.99 If c1 0.01 Then pp = 1 If c1 0.01 Then c1 = 0.01 w(s, m, n) = Log(c1) + Log(1 - l1) If pp = 1 Then w(s, m, n) = -999 Next Next Next For s = 1 To 99 For m = -1 To 1 For n = -1 To 1 For q = -5 To 5 v(s, m, n, q) = -999 Next Next Next Next s = 1 For m = -1 To 1 For n = -1 To 1 q = n - m v(s, m, n, q) = u(s, m, n) Next Next For s = 2 To 99 For m = -1 To 1 For n = -1 To 1 For q = -5 To 5 u1 = u(s, m, n) c1 = cs(s) + m * h y1 = ys(s) + n * h qx = q + m - n t = 0 If qx 5 Then t = 1000 If qx -5 Then t = 1000 vs = -999 Do Until t 100 For mx = -1 To 1 For nx = -1 To 1 pp = 0 w1 = w(s - 1, mx, nx) If w1 u1 Then pp = 1 c2 = cs(s - 1) + mx * h y2 = ys(s - 1) + nx * h If c2 c1 Then pp = 1 If y2 y1 Then pp = 1 If v(s - 1, mx, nx, qx) -900 Then pp = 1 v1 = u1 + v(s - 1, mx, nx, qx) If pp = 1 Then v1 = -999 If v1 vs Then mxs = mx If v1 vs Then nxs = nx If v1 vs Then vs = v1 Next Next t = 1000 Loop gotoc(s, m, n, q) = mxs gotoy(s, m, n, q) = nxs v(s, m, n, q) = vs Next Next Next Next s = 100 vs = -999 For m = -1 To 1 For n = -1 To 1 c1 = cs(s) + m * h y1 = ys(s) + n * h u1 = Log(c1) + Log(1 - y1 / th(s)) qx = m - n For mx = -1 To 1 For nx = -1 To 1 pp = 0 w1 = w(s - 1, mx, nx) If w1 u1 Then pp = 1 c2 = cs(s - 1) + mx * h y2 = ys(s - 1) + nx * h If c2 c1 Then pp = 1 If y2 y1 Then pp = 1 If v(s - 1, mx, nx, qx) -900 Then pp = 1 v1 = u1 + v(s - 1, mx, nx, qx) If pp = 1 Then v1 = -999 If v1 vs Then ms = m If v1 vs Then ns = n If v1 vs Then mxs = mx If v1 vs Then nxs = nx If v1 vs Then vs = v1 Next Next Next Next opc(100) = ms opy(100) = ns opc(99) = mxs opy(99) = nxs opq(99) = ms - ns For t = 1 To 98 s = 99 - t opc(s) = gotoc(s + 1, opc(s + 1), opy(s + 1), opq(s + 1)) opy(s) = gotoy(s + 1, opc(s + 1), opy(s + 1), opq(s + 1)) opq(s) = opq(s + 1) + opc(s + 1) - opy(s + 1) Next For s = 1 To 100 cs(s) = cs(s) + opc(s) * h ys(s) = ys(s) + opy(s) * h Next e = 0 For s = 1 To 100 e = e + opc(s) ^ 2 + opy(s) ^ 2 Next If e 2 Then h = h / 2 If h 10 ^ (-5) Then time = 10000 Debug.Print time, e, vs time = time + 1 Loop For s = 1 To 98 y1 = ys(s + 1) - ys(s) c1 = cs(s + 1) - cs(s) pp = 0 If y1 10 ^ (-5) Then pp = 1 If y1 10 ^ (-5) Then y1 = 1 R = 100 * (1 - c1 / y1) If pp = 1 Then R = 0 Debug.Print R Next End Sub
https://w.atwiki.jp/ce00582/pages/1196.html
Private Sub Command1_Click() Dim n As Single Dim a(1 To 100000) As String Dim x1(1 To 3000) As String Dim x2(1 To 3000) As String Dim x3(1 To 3000) As String Dim x4(1 To 3000) As String Dim x5(1 To 3000) As String Dim x6(1 To 3000) As String Dim dname(1 To 10000) As Single Dim dstart(1 To 10000) As Single Dim dend(1 To 10000) As Single Dim data(1 To 100000) As String Dim kk() As String Dim buf As String Dim p As Single Dim endnum As Single Dim endn As Single Dim nx As Single n = 1 Open "c \psid\spss80.txt" For Input As #1 Do Until EOF(1) Line Input #1, buf a(n) = buf n = n + 1 Loop Close #1 endnum = n - 1 m = 1 For n = 1 To endnum x1(m) = Mid(a(n), 7, 6) x2(m) = Mid(a(n), 20, 11) x3(m) = Mid(a(n), 37, 6) x4(m) = Mid(a(n), 50, 11) x5(m) = Mid(a(n), 67, 6) x6(m) = Mid(a(n), 80, 11) m = m + 1 Next num = m - 1 n = 0 For m = 1 To num - 1 n = n + 1 p = InStr(x1(m), "V") dname(n) = Val(Mid(x1(m), p + 1, 5)) kk = Split(x2(m), "-") dstart(n) = Val(kk(0)) dend(n) = Val(kk(1)) n = n + 1 p = InStr(x3(m), "V") dname(n) = Val(Mid(x3(m), p + 1, 5)) kk = Split(x4(m), "-") dstart(n) = Val(kk(0)) dend(n) = Val(kk(1)) n = n + 1 p = InStr(x5(m), "V") dname(n) = Val(Mid(x5(m), p + 1, 5)) kk = Split(x6(m), "-") dstart(n) = Val(kk(0)) dend(n) = Val(kk(1)) Next n = n + 1 p = InStr(x1(m), "V") dname(n) = Val(Mid(x1(m), p + 1, 5)) kk = Split(x2(m), "-") dstart(n) = Val(kk(0)) dend(n) = Val(kk(1)) n = n + 1 p = InStr(x3(m), "V") dname(n) = Val(Mid(x3(m), p + 1, 5)) kk = Split(x4(m), "-") dstart(n) = Val(kk(0)) dend(n) = Val(kk(1)) Open "c /psid/code80.txt" For Output As #2 For m = 1 To 557 Write #2, m, dname(m), dstart(m), dend(m) Next Close #2 End Sub
https://w.atwiki.jp/darui_program/pages/222.html
今回は、 Phongシェーダーの改良版である Blinn-Phongシェーダーを実装します。 Phongシェーダーは反射ベクトルを求めるのですが、 環境によっては、反射ベクトルを計算するのが大変らしい(?)ので、 ライトベクトルと視線ベクトルの中間の角度にあるベクトルで計算するのが BlinnPhongシェーダーです。 以下 実装 //グローバル変数宣言 float4x4 world;// ワールド行列 float4x4 view;// ビュー行列 float4x4 projection;// 透視変換行列 float3 light = float3( 10.0f, 10.0f, 10.0f ); // ライトの位置 //入力頂点構造体 struct VS_INPUT { float4 position POSITION; //頂点座標 float3 normal NORMAL;//法線ベクトル float4 color COLOR00;//色 }; //出力頂点構造体 struct VS_OUTPUT { float4 position POSITION; //頂点座標 float3 normal TEXCOORD1; //法線ベクトル float4 color COLOR0; //色 float3 light TEXCOORD0; //ライトベクトル float3 view TEXCOORD2; //ビューベクトル float3 halfAngle TEXCOORD3; //二等分ベクトル }; //頂点シェーダー VS_OUTPUT vs_main( VS_INPUT input, uniform float4x4 world, uniform float4x4 view, uniform float4x4 projection, uniform float3 light ) { VS_OUTPUT output; //モデルビュー行列 float4x4 WV = mul( world, view ); //法線ベクトルの座標変換 output.normal = mul(input.normal,(float3x3)WV); //モデルビュー透視変換行列 float4x4 WVP = mul( WV, projection ); //頂点座標の座標変換 output.position = mul(input.position,WVP); //色の設定 output.color = input.color; //視点座標系の頂点座標を求める float3 PosEye = mul( input.position, WV ); //視点座標系のライト座標を求める float3 LightPosEye = mul( light, (float3x3)view ); //ライト方向のベクトル float3 L = normalize( LightPosEye - PosEye ); output.light =L; //視点方向のベクトル float3 V = normalize(-PosEye); output.view = V; // 追加 //二等分ベクトル float3 H = normalize( L+V ); output.halfAngle = H; //ビューベクトルの設定 output.view = V; return output; } //ライトカラー float4 Ambient = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float4 Diffuse = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float4 Specular = float4( 1.0f, 1.0f, 1.0f, 1.0f ); //マテリアルカラー float4 Ka = float4( 0.2f, 0.2f, 0.2f, 1.0f ); float4 Kd = float4( 0.6f, 0.6f, 0.6f, 1.0f ); float4 Ks = float4( 1.0f, 1.0f, 1.0f, 1.0f ); float power = 90.0f; //入力ピクセル構造体 struct PS_INPUT { float4 color COLOR0; //色 float3 normal TEXCOORD1; //法線 float3 light TEXCOORD0; //ライトベクトル float3 view TEXCOORD2; //ビューベクトル float3 halfAngle TEXCOORD3; //二等分ベクトル }; //ピクセルシェーダー float4 ps_main( PS_INPUT input, uniform float4 Ambient, uniform float4 Diffuse, uniform float4 Specular, uniform float4 Ka, uniform float4 Kd, uniform float4 Ks, uniform float power ) COLOR0 { //ライトベクトルの正規化 float3 L = normalize( input.light ); //法線の正規化 float3 N = normalize( input.normal ); //ビューベクトルの正規化 float3 V = normalize( input.view ); //二等分べkとるの正規化 float3 H = normalize( input.halfAngle ); //ディフーズ float diffuse = max( dot( L, N ), 0 ); //スペキュラ float specular = pow( max( dot( N, H ), 0 ), power ); //環境光 float4 totalAmbient = Ambient * Ka * input.color; //拡散反射光 float4 totalDiffuse = Kd * Diffuse * diffuse * input.color; //鏡面反射光 float4 totalSpecular = Ks * Specular * specular; return totalAmbient + totalDiffuse + totalSpecular; } //テクニックの指定 technique blinnphong { //パスの指定 pass Pass_0 { DepthTestEnable = true; //デプステストを有効 BlendEnable = true; //ブレンドを有効 BlendFunc = float2( SrcAlpha,OneMinusSrcAlpha ); //ブレンド関数を設定 VertexProgram = compile arbvp1 vs_main( world, view, projection, light ); FragmentProgram = compile arbfp1 ps_main( Ambient, Diffuse, Specular, Ka, Kd, Ks, power ); } } 実行結果ですが、 こちらがPhongシェーダー こちらがBlinn-Phongシェーダー PhongとBlinnPhongの違いは、実装の違いで、 反射ベクトルか、ハーフベクトルを鏡面反射の計算に使うかの違いなので、 自分の好きな方を使ってください。 今回は、ここまで。
https://w.atwiki.jp/ce00582/pages/1755.html
Private Sub Command1_Click() Dim age As Single Dim car As Single Dim minx(14 To 75, 0 To 50) As Single Dim x(14 To 75, 0 To 50) As Single Open "c /eli/data/女子被保険者報酬.txt " For Input As #6 Do Until EOF(6) Input #6, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52 age = a1 minx(age, 0) = a2 minx(age, 1) = a3 minx(age, 2) = a4 minx(age, 3) = a5 minx(age, 4) = a6 minx(age, 5) = a7 minx(age, 6) = a8 minx(age, 7) = a9 minx(age, 8) = a10 minx(age, 9) = a11 minx(age, 10) = a12 minx(age, 11) = a13 minx(age, 12) = a14 minx(age, 13) = a15 minx(age, 14) = a16 minx(age, 15) = a17 minx(age, 16) = a18 minx(age, 17) = a19 minx(age, 18) = a20 minx(age, 19) = a21 minx(age, 20) = a22 minx(age, 21) = a23 minx(age, 22) = a24 minx(age, 23) = a25 minx(age, 24) = a26 minx(age, 25) = a27 minx(age, 26) = a28 minx(age, 27) = a29 minx(age, 28) = a30 minx(age, 29) = a31 minx(age, 30) = a32 minx(age, 31) = a33 minx(age, 32) = a34 minx(age, 33) = a35 minx(age, 34) = a36 minx(age, 35) = a37 minx(age, 36) = a38 minx(age, 37) = a39 minx(age, 38) = a40 minx(age, 39) = a41 minx(age, 40) = a42 minx(age, 41) = a43 minx(age, 42) = a44 minx(age, 43) = a45 minx(age, 44) = a46 minx(age, 45) = a47 minx(age, 46) = a48 minx(age, 47) = a49 minx(age, 48) = a50 minx(age, 49) = a51 minx(age, 50) = a52 Loop Close #6 For age = 15 To 69 For car = 1 To 50 minx(age, car) = minx(age, car) / (210 * 10 ^ 4) Next Next Open "c /eli/gdata/女子被保険者報酬.txt " For Output As #4 For age = 15 To 69 For car = 1 To 50 Write #4, age, car, minx(age, car) Next Next Close #4 End Sub
https://w.atwiki.jp/ce00582/pages/1753.html
Private Sub Command1_Click() Dim age As Single Dim car As Single Dim minx(14 To 75, 0 To 50) As Single Dim x(14 To 75, 0 To 50) As Single Open "c /eli/data/男子待期者報酬.txt " For Input As #6 Do Until EOF(6) Input #6, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52 age = a1 minx(age, 0) = a2 minx(age, 1) = a3 minx(age, 2) = a4 minx(age, 3) = a5 minx(age, 4) = a6 minx(age, 5) = a7 minx(age, 6) = a8 minx(age, 7) = a9 minx(age, 8) = a10 minx(age, 9) = a11 minx(age, 10) = a12 minx(age, 11) = a13 minx(age, 12) = a14 minx(age, 13) = a15 minx(age, 14) = a16 minx(age, 15) = a17 minx(age, 16) = a18 minx(age, 17) = a19 minx(age, 18) = a20 minx(age, 19) = a21 minx(age, 20) = a22 minx(age, 21) = a23 minx(age, 22) = a24 minx(age, 23) = a25 minx(age, 24) = a26 minx(age, 25) = a27 minx(age, 26) = a28 minx(age, 27) = a29 minx(age, 28) = a30 minx(age, 29) = a31 minx(age, 30) = a32 minx(age, 31) = a33 minx(age, 32) = a34 minx(age, 33) = a35 minx(age, 34) = a36 minx(age, 35) = a37 minx(age, 36) = a38 minx(age, 37) = a39 minx(age, 38) = a40 minx(age, 39) = a41 minx(age, 40) = a42 minx(age, 41) = a43 minx(age, 42) = a44 minx(age, 43) = a45 minx(age, 44) = a46 minx(age, 45) = a47 minx(age, 46) = a48 minx(age, 47) = a49 minx(age, 48) = a50 minx(age, 49) = a51 minx(age, 50) = a52 Loop Close #6 For age = 15 To 69 For car = 1 To 50 minx(age, car) = minx(age, car) / (240 * 10 ^ 4) Next Next Open "c /eli/gdata/男子待期者報酬.txt " For Output As #4 For age = 15 To 69 For car = 1 To 50 Write #4, age, car, minx(age, car) / car Next Next Close #4 End Sub